﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Intelsi.Entity;
using Microsoft.Practices.Unity;

namespace Intelsi.DataAcces
{
   public class DetallePedidoDAO:MasterDataAccess,IDetallePedidoDAO

    {
        public void RegistarDetalle(List<DetallePedidoDTO> detalle, int pedidoId)
        {

            foreach (var item in detalle)
            {
                item.IdPedido = pedidoId;
                RegistarDetalle(item);
            }
        }

        public void RegistarDetalle(DetallePedidoDTO detalle)
        {
            DetallePedido detaPedi = new DetallePedido();

            detaPedi.Item = detalle.Item;
            detaPedi.IdPedido = detalle.IdPedido;

            var existe = (from dp in Context.DetallePedidoes
                          where dp.IdPedido == detaPedi.IdPedido
                          where dp.IdProducto == detaPedi.IdProducto
                          select dp).SingleOrDefault();
            if (existe == null)
            {
                detaPedi.IdProducto = detalle.IdProducto;
                detaPedi.Cantidad = detalle.Cantidad;
                detaPedi.Existencia = detalle.Existencia;

                Context.DetallePedidoes.Add(detaPedi);
                Context.SaveChanges();
            }
            else 
            {
                existe.IdProducto = detalle.IdProducto;
                existe.Cantidad = detalle.Cantidad;
                existe.Existencia = detalle.Existencia;

                Context.Entry(existe).State = System.Data.EntityState.Modified;
                Context.SaveChanges();
            }
        }

       /*
        public void RegistarDetalle(List<DetallePedido> detalle, int pedidoId)
        {
            foreach (var item in detalle)
            {
                item.IdPedido = pedidoId;
                RegistarDetalle(item);
            }
        }
       */

       /*
        public void RegistarDetalle(DetallePedido detalle)
        {

            Context.DetallePedidoes.Add(detalle);
            Context.SaveChanges();

        }

       */

       /*
        public List<DetallePedido> GetFromDetallePedidoBiIdPedido1(int idPedio)
        {
            var query = from dp in Context.DetallePedidoes
                         where (dp.IdPedido == idPedio)

                        select dp;


            return query.ToList();
        }

       */

        public List<DetallePedidoDTO> GetFromDetallePedidoBiIdPedido(int idPedio)
        {
            var query = from dp in Context.DetallePedidoes

                        where (dp.IdPedido.Equals(idPedio))
                        join pro in Context.Productoes on dp.IdProducto equals pro.IdProducto
                        join mar in Context.Marcas on pro.IdMarca equals mar.IdMarca
                        select new DetallePedidoDTO
                        {
                            //Item = dp.Item,
                            IdProducto = dp.IdProducto,
                            IdPedido = dp.IdPedido,
                            Existencia = dp.Existencia,
                            Descripcion = pro.Nombre,
                            Cantidad = dp.Cantidad,
                            Codigo = pro.Codigo,
                            NombreMarca = mar.Nombre
                        };

            return query.ToList();
        }

       /*
        public void UpDateDetalle(List<DetallePedidoDTO> detalle, int pedidoId)
        {
            throw new NotImplementedException();
        }

        public void UpDateDetalle(DetallePedidoDTO detalle)
        {

            var query = from dp in Context.DetallePedidoes
                        where dp.Item == detalle.Item
                        where dp.IdPedido == detalle.IdPedido
                        select new DetallePedido()
                        {

                            Item = dp.Item,
                            IdPedido = dp.IdPedido,
                            IdProducto = dp.IdProducto,
                            Cantidad = dp.Cantidad,
                            Existencia = dp.Existencia
                        };




            //DetallePedido detaPedi = new DetallePedido();

            //detaPedi.Item = detalle.Item;
            //detaPedi.IdPedido = detalle.IdPedido;
            //detaPedi.IdProducto = detalle.IdProducto;
            //detaPedi.Cantidad = detalle.Cantidad;
            //detaPedi.Existencia = detalle.Existencia;

            //detalle.Item = detaPedi.Item;
            //detalle.IdPedido = detaPedi.IdPedido;
            //detalle.IdProducto = detaPedi.IdProducto;
            //detalle.Cantidad = detaPedi.Cantidad;
            //detalle.Existencia = detaPedi.Existencia.HasValue;



            //Context.DetallePedidoes.Add(detaPedi);
            //Context.SaveChanges();

        }

       */
    }
}
